package com.xinchuang.service.targetSystem;

import com.alibaba.fastjson.JSONArray;
import com.xinchuang.common.Result;
import com.xinchuang.entity.targetSystem.target.KnowData;

import java.util.List;
import java.util.Map;

/**
 * @ClassName KnowService
 * @Description: TODO(知识维护)
 * @Author zhangxuan
 * @Date 2022-02-22 16:28
 * @Verion V1.0
 */
public interface KnowService {

    Result addKnow(KnowData knowData, int sign, String userId);

    Result deleteKnow(String id, int sign);

    Result selectKnowList(int pageNum, int pageSize, String relId, int sign, String type);

    Result selectKnowRelationList(String relId, int sign);

    Result deleteKnowRelation(String knowId, String id, int sign);

    Result addKnowRelation(String relId, int sign, JSONArray array, String heard);

    Result selectPut(int sign, int pageNum, int pageSize);

    /**
     * @return com.zkwc.targetmanage.common.Result
     * @author zhangxuan
     * @Description TODO 查询系统/体系树
     * @Date 17:12 2022/3/2
     * @Param [sign]
     **/
    Result selectTree(int sign, String keyword, String country, String classify);

    Result selectIndexPut(int type, Integer target, Integer sign, String relId);

    Result selectTargetAnalyze(String targetId, String subId, int type);

    Result selectCrucialAnalyze(String targetId);

    Map<String, Object> selectBlowAnalyze(String targetId);

    Result selectAnalyzeMap(String targetId, int type);

    Result selectSystemAnalyze(String sId, int type);

    Result selectSystemCrucialAnalyze(String sId);

    Map<String, Object> selectSystemBlowAnalyze(String sId);

    Result selectSystemYHInit(String sid);

    Result selectSystemYH(String sid, boolean system);

    Result selectSystemAnalyzeMap(String sId, int type);

    Result selectSystemsAnalyze(String sysId, int type);

    Result selectSystemsCrucialAnalyze(String sysId);

    Map<String, Object> selectSystemsBlowAnalyze(String sysId);

    Result blowLevel(String sysId);

    Result selectSystemsAnalyzeMap(String sysId, int type);

    Result selectValueAnalyze(String sysId, String sId, String targetId, int sign);

    Result addValue(String id, String sysId, String sId, String targetId, String knowId, Double score, Double weight);

    Result selectValueSystemAnalyze(String sId, String targetId, int sign);

    Result addValueSystem(String id, String sId, String targetId, String knowId, Double score, Double weight);

    Result selectValueTargetAnalyze(String targetId);

    Result addValueTarget(String id, String targetId, String knowId, Double score, Double weight);

    Result selectTargetAnalyzeValue(String targetId, List<Map> list);

    /**
     * 删除系统后价值分析影像处理
     *
     * @param sId
     */
    void deleteSystemValue(String sId);

    /**
     * 删除体系中系统后价值分析影像处理
     */
    void deleteSystemsSystemValue(String sysId, String sId);

    /**
     * 8
     * 删除系统目标后价值分析影像处理
     *
     * @param sId
     * @param targetId
     */
    void deleteSystemTargetValue(String sId, String targetId);

    /**
     * 8
     * 删除体系目标后价值分析影像处理
     *
     * @param sysId
     * @param targetId
     */
    void deleteSystemsTargetValue(String sysId, String targetId);

    /**
     * 删除目标后价值分析影像处理
     *
     * @param targetId
     */
    void deleteTargetValue(String targetId);

    /**
     * 删除子目标后价值分析影像处理
     *
     * @param sudId
     */
    void deleteSubTargetValue(String sudId);

    /**
     * @return void
     * @author zhangxuan
     * @Description TODO 删除知识维护
     * @Date 17:04 2022/4/1
     * @Param []
     **/
    void deleteKnowValue(String knowId);

    /**
     * @return void
     * @author zhangxuan
     * @Description TODO 修改知识中包含属性名称的字段
     * @Date 15:41 2022/4/20
     * @Param [name 字段, replace 待修改字段, type 共有私有, status 主副任务]
     **/
    void updateKnowIndexAndRemark(String name, String replace, int type, int status, String typeId);

    /**
     *@author zhangxuan
     *@Description TODO 查询系统/体系类型下拉
     *@Date 15:45 2022/7/13
     *@Param []
     *@return com.zkwc.targetmanage.common.Result
     **/
    Result selectSysType(int type);

}
